home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2009 March / PCWMAR09.iso / Software / Freeware / NSIS 2.41 / nsis-2.41-setup.exe / Examples / WordFuncTest.nsi < prev   
Encoding:
Text File  |  2008-01-27  |  16.9 KB  |  647 lines

  1. ;_____________________________________________________________________________
  2. ;
  3. ;                          Word Functions Test
  4. ;_____________________________________________________________________________
  5. ;
  6. ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
  7.  
  8. Name "Word Functions Test"
  9. OutFile "WordFuncTest.exe"
  10. Caption "$(^Name)"
  11. ShowInstDetails show
  12. XPStyle on
  13. RequestExecutionLevel user
  14.  
  15. Var FUNCTION
  16. Var OUT
  17.  
  18. !include "WordFunc.nsh"
  19.  
  20. !insertmacro WordFind
  21. !insertmacro WordFindS
  22. !insertmacro WordFind2X
  23. !insertmacro WordFind2XS
  24. !insertmacro WordFind3X
  25. !insertmacro WordFind3XS
  26. !insertmacro WordReplace
  27. !insertmacro WordReplaceS
  28. !insertmacro WordAdd
  29. !insertmacro WordAddS
  30. !insertmacro WordInsert
  31. !insertmacro WordInsertS
  32. !insertmacro StrFilter
  33. !insertmacro StrFilterS
  34. !insertmacro VersionCompare
  35. !insertmacro VersionConvert
  36.  
  37. !insertmacro un.WordFind
  38. !insertmacro un.WordFindS
  39. !insertmacro un.WordFind2X
  40. !insertmacro un.WordFind2XS
  41. !insertmacro un.WordFind3X
  42. !insertmacro un.WordFind3XS
  43. !insertmacro un.WordReplace
  44. !insertmacro un.WordReplaceS
  45. !insertmacro un.WordAdd
  46. !insertmacro un.WordAddS
  47. !insertmacro un.WordInsert
  48. !insertmacro un.WordInsertS
  49. !insertmacro un.StrFilter
  50. !insertmacro un.StrFilterS
  51. !insertmacro un.VersionCompare
  52. !insertmacro un.VersionConvert
  53.  
  54.  
  55.  
  56. ;############### INSTALL ###############
  57.  
  58. !define StackVerificationStart `!insertmacro StackVerificationStart`
  59. !macro StackVerificationStart _FUNCTION
  60.     StrCpy $FUNCTION ${_FUNCTION}
  61.     Call StackVerificationStart
  62. !macroend
  63.  
  64. !define StackVerificationEnd `!insertmacro StackVerificationEnd`
  65. !macro StackVerificationEnd
  66.     Call StackVerificationEnd
  67. !macroend
  68.  
  69. Function StackVerificationStart
  70.     StrCpy $0 !0
  71.     StrCpy $1 !1
  72.     StrCpy $2 !2
  73.     StrCpy $3 !3
  74.     StrCpy $4 !4
  75.     StrCpy $5 !5
  76.     StrCpy $6 !6
  77.     StrCpy $7 !7
  78.     StrCpy $8 !8
  79.     StrCpy $9 !9
  80.     StrCpy $R0 !R0
  81.     StrCpy $R1 !R1
  82.     StrCpy $R2 !R2
  83.     StrCpy $R3 !R3
  84.     StrCpy $R4 !R4
  85.     StrCpy $R5 !R5
  86.     StrCpy $R6 !R6
  87.     StrCpy $R7 !R7
  88.     StrCpy $R8 !R8
  89.     StrCpy $R9 !R9
  90. FunctionEnd
  91.  
  92. Function StackVerificationEnd
  93.     IfErrors +3
  94.     DetailPrint 'PASSED $FUNCTION no errors'
  95.     goto +2
  96.     DetailPrint 'FAILED   $FUNCTION error'
  97.  
  98.     StrCmp $0 '!0' 0 error
  99.     StrCmp $1 '!1' 0 error
  100.     StrCmp $2 '!2' 0 error
  101.     StrCmp $3 '!3' 0 error
  102.     StrCmp $4 '!4' 0 error
  103.     StrCmp $5 '!5' 0 error
  104.     StrCmp $6 '!6' 0 error
  105.     StrCmp $7 '!7' 0 error
  106.     StrCmp $8 '!8' 0 error
  107.     StrCmp $9 '!9' 0 error
  108.     StrCmp $R0 '!R0' 0 error
  109.     StrCmp $R1 '!R1' 0 error
  110.     StrCmp $R2 '!R2' 0 error
  111.     StrCmp $R3 '!R3' 0 error
  112.     StrCmp $R4 '!R4' 0 error
  113.     StrCmp $R5 '!R5' 0 error
  114.     StrCmp $R6 '!R6' 0 error
  115.     StrCmp $R7 '!R7' 0 error
  116.     StrCmp $R8 '!R8' 0 error
  117.     StrCmp $R9 '!R9' 0 error
  118.     DetailPrint 'PASSED $FUNCTION stack'
  119.     goto end
  120.  
  121.     error:
  122.     DetailPrint 'FAILED   $FUNCTION stack'
  123. ;    MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2
  124. ;    quit
  125.  
  126.     end:
  127. FunctionEnd
  128.  
  129.  
  130.  
  131. Section WordFind
  132.     ${StackVerificationStart} WordFind
  133.  
  134.     ${WordFind} '||io.sys|||Program Files|||WINDOWS' '||' '-02' $OUT
  135.     StrCmp $OUT '|Program Files' 0 error
  136.  
  137.     ${WordFind} '||io.sys||||Program Files||||WINDOWS' '||' '-2' $OUT
  138.     StrCmp $OUT 'Program Files' 0 error
  139.  
  140.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '-2}' $OUT
  141.     StrCmp $OUT '|logo.sys|||WINDOWS' 0 error
  142.  
  143.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '#' $OUT
  144.     StrCmp $OUT '3' 0 error
  145.  
  146.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '*' $OUT
  147.     StrCmp $OUT '2' 0 error
  148.  
  149.     ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
  150.     StrCmp $OUT '2' 0 error
  151.  
  152.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2}}' $OUT
  153.     StrCmp $OUT '|||WINDOWS' 0 error
  154.  
  155.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2{}' $OUT
  156.     StrCmp $OUT 'C:\io.sys|||WINDOWS' 0 error
  157.  
  158.     ${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2*}' $OUT
  159.     StrCmp $OUT '|logo.sys|||WINDOWS' 0 error
  160.  
  161.     ${WordFind} 'C:\\Program Files\\NSIS\\NSIS.chm' '\' '-2{*' $OUT
  162.     StrCmp $OUT 'C:\\Program Files\\NSIS' 0 error
  163.  
  164.     ${WordFind} 'C:\io.sys|||Program Files|||WINDOWS|||' '||' '-1' $OUT
  165.     StrCmp $OUT '|' 0 error
  166.  
  167.     ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '-1}' $OUT
  168.     StrCmp $OUT '' 0 error
  169.  
  170.     ${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '+1{' $OUT
  171.     StrCmp $OUT '' 0 error
  172.  
  173.     ${WordFind} 'C:\io.sys|||logo.sys' '_' 'E+1' $OUT
  174.     IfErrors 0 error
  175.     StrCmp $OUT 1 0 error
  176.  
  177.     ${WordFind} 'C:\io.sys|||logo.sys|||' '\' 'E+3' $OUT
  178.     IfErrors 0 error
  179.     StrCmp $OUT 2 0 error
  180.  
  181.     ${WordFind} 'C:\io.sys|||logo.sys' '\' 'E1' $OUT
  182.     IfErrors 0 error
  183.     StrCmp $OUT 3 0 error
  184.  
  185.     goto +2
  186.     error:
  187.     SetErrors
  188.  
  189.     ${StackVerificationEnd}
  190. SectionEnd
  191.  
  192.  
  193. Section WordFindS
  194.     ${StackVerificationStart} WordFindS
  195.  
  196.     ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|PROGRAM FILES' $OUT
  197.     StrCmp $OUT 'C:\io.sys|||Program Files|||WINDOWS' 0 error
  198.  
  199.     ${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
  200.     StrCmp $OUT '2' 0 error
  201.  
  202.     goto +2
  203.     error:
  204.     SetErrors
  205.  
  206.     ${StackVerificationEnd}
  207. SectionEnd
  208.  
  209.  
  210. Section WordFind2X
  211.     ${StackVerificationStart} WordFind2X
  212.  
  213.     ${WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  214.     StrCmp $OUT 'logo.sys' 0 error
  215.  
  216.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1' $OUT
  217.     StrCmp $OUT 'logo' 0 error
  218.  
  219.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{{' $OUT
  220.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:' 0 error
  221.  
  222.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{}' $OUT
  223.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:sys' 0 error
  224.  
  225.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{*' $OUT
  226.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.' 0 error
  227.  
  228.     ${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
  229.     StrCmp $OUT '2' 0 error
  230.  
  231.     ${WordFind2X} '||a||b||c' '||' '||' 'E+1' $OUT
  232.     StrCmp $OUT 'a' 0 error
  233.  
  234.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E+1' $OUT
  235.     IfErrors 0 error
  236.     StrCmp $OUT 1 0 error
  237.  
  238.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '[' '];' 'E+2' $OUT
  239.     IfErrors 0 error
  240.     StrCmp $OUT 2 0 error
  241.  
  242.     ${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E2' $OUT
  243.     IfErrors 0 error
  244.     StrCmp $OUT 3 0 error
  245.  
  246.     goto +2
  247.     error:
  248.     SetErrors
  249.  
  250.     ${StackVerificationEnd}
  251. SectionEnd
  252.  
  253.  
  254. Section WordFind2XS
  255.     ${StackVerificationStart} WordFind2XS
  256.  
  257.     ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/LOGO' $OUT
  258.     StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.sys' 0 error
  259.  
  260.     ${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
  261.     StrCmp $OUT '2' 0 error
  262.  
  263.     goto +2
  264.     error:
  265.     SetErrors
  266.  
  267.     ${StackVerificationEnd}
  268. SectionEnd
  269.  
  270.  
  271. Section WordFind3X
  272.     ${StackVerificationStart} WordFind3X
  273.  
  274.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  275.     StrCmp $OUT '1.AAB' 0 error
  276.  
  277.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1' $OUT
  278.     StrCmp $OUT '2.BAA' 0 error
  279.  
  280.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{{' $OUT
  281.     StrCmp $OUT '[1.AAB];' 0 error
  282.  
  283.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{}' $OUT
  284.     StrCmp $OUT '[1.AAB];[3.BBB];' 0 error
  285.  
  286.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{*' $OUT
  287.     StrCmp $OUT '[1.AAB];[2.BAA];' 0 error
  288.  
  289.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
  290.     StrCmp $OUT '2' 0 error
  291.  
  292.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'XX' '];' 'E+1' $OUT
  293.     IfErrors 0 error
  294.     StrCmp $OUT '1' 0 error
  295.  
  296.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E+3' $OUT
  297.     IfErrors 0 error
  298.     StrCmp $OUT '2' 0 error
  299.  
  300.     ${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E3' $OUT
  301.     IfErrors 0 error
  302.     StrCmp $OUT '3' 0 error
  303.  
  304.     goto +2
  305.     error:
  306.     SetErrors
  307.  
  308.     ${StackVerificationEnd}
  309. SectionEnd
  310.  
  311.  
  312. Section WordFind3XS
  313.     ${StackVerificationStart} WordFind3XS
  314.  
  315.     ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.baa' $OUT
  316.     StrCmp $OUT '[1.AAB];[2.BAA];[3.BBB];' 0 error
  317.  
  318.     ${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
  319.     StrCmp $OUT '2' 0 error
  320.  
  321.     goto +2
  322.     error:
  323.     SetErrors
  324.  
  325.     ${StackVerificationEnd}
  326. SectionEnd
  327.  
  328.  
  329. Section WordReplace
  330.     ${StackVerificationStart} WordReplace
  331.  
  332.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  333.     StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error
  334.  
  335.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' '' '+' $OUT
  336.     StrCmp $OUT 'C:\io. C:\logo. C:\WINDOWS' 0 error
  337.  
  338.     ${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'C:\io.sys' '' '+' $OUT
  339.     StrCmp $OUT ' C:\logo.sys C:\WINDOWS' 0 error
  340.  
  341.     ${WordReplace} 'C:\io.sys      C:\logo.sys   C:\WINDOWS' ' ' ' ' '+1*' $OUT
  342.     StrCmp $OUT 'C:\io.sys C:\logo.sys   C:\WINDOWS' 0 error
  343.  
  344.     ${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT
  345.     StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error
  346.  
  347.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{' $OUT
  348.     StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
  349.  
  350.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}' $OUT
  351.     StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
  352.  
  353.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}' $OUT
  354.     StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error
  355.  
  356.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{*' $OUT
  357.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error
  358.  
  359.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}*' $OUT
  360.     StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  361.  
  362.     ${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
  363.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  364.  
  365.     ${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
  366.     StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error
  367.  
  368.     ${WordReplace} 'C:\io.sys C:\logo.sys' '#sys' '|sys|' 'E+1' $OUT
  369.     IfErrors 0 error
  370.     StrCmp $OUT '1' 0 error
  371.  
  372.     ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E+3' $OUT
  373.     IfErrors 0 error
  374.     StrCmp $OUT '2' 0 error
  375.  
  376.     ${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E3' $OUT
  377.     IfErrors 0 error
  378.     StrCmp $OUT '3' 0 error
  379.  
  380.     goto +2
  381.     error:
  382.     SetErrors
  383.  
  384.     ${StackVerificationEnd}
  385. SectionEnd
  386.  
  387.  
  388. Section WordReplaceS
  389.     ${StackVerificationStart} WordReplaceS
  390.  
  391.     ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  392.     StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error
  393.  
  394.     ${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'sys' 'bmp' '+2' $OUT
  395.     StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error
  396.  
  397.     goto +2
  398.     error:
  399.     SetErrors
  400.  
  401.     ${StackVerificationEnd}
  402. SectionEnd
  403.  
  404.  
  405. Section WordAdd
  406.     ${StackVerificationStart} WordAdd
  407.  
  408.     ${WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  409.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  410.  
  411.     ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
  412.     StrCmp $OUT 'C:\logo.sys' 0 error
  413.  
  414.     ${WordAdd} 'C:\io.sys' ' ' '+C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
  415.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  416.  
  417.     ${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS' $OUT
  418.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  419.  
  420.     ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' '+C:\logo.sys' $OUT
  421.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  422.  
  423.     ${WordAdd} 'C:\io.sys C:\logo.sys' ' ' 'E-' $OUT
  424.     StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
  425.     IfErrors error
  426.  
  427.     ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'E-C:\logo.sys' $OUT
  428.     IfErrors 0 error
  429.     StrCmp $OUT '1' 0 error
  430.  
  431.     ${WordAdd} 'C:\io.sys C:\logo.sys' '' 'EC:\logo.sys' $OUT
  432.     IfErrors 0 error
  433.     StrCmp $OUT '3' 0 error
  434.  
  435.     goto +2
  436.     error:
  437.     SetErrors
  438.  
  439.     ${StackVerificationEnd}
  440. SectionEnd
  441.  
  442.  
  443. Section WordAddS
  444.     ${StackVerificationStart} WordAddS
  445.  
  446.     ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\windows C:\config.sys' $OUT
  447.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\windows C:\config.sys' 0 error
  448.  
  449.     ${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  450.     StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error
  451.  
  452.     goto +2
  453.     error:
  454.     SetErrors
  455.  
  456.     ${StackVerificationEnd}
  457. SectionEnd
  458.  
  459.  
  460. Section WordInsert
  461.     ${StackVerificationStart} WordInsert
  462.  
  463.     ${WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  464.     StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error
  465.  
  466.     ${WordInsert} 'C:\io.sys' ' ' 'C:\WINDOWS' '+2' $OUT
  467.     StrCmp $OUT 'C:\io.sys C:\WINDOWS' 0 error
  468.  
  469.     ${WordInsert} '' ' ' 'C:\WINDOWS' '+1' $OUT
  470.     StrCmp $OUT 'C:\WINDOWS ' 0 error
  471.  
  472.     ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E+1' $OUT
  473.     IfErrors 0 error
  474.     StrCmp $OUT '1' 0 error
  475.  
  476.     ${WordInsert} 'C:\io.sys C:\logo.sys' ' ' 'C:\logo.sys' 'E+4' $OUT
  477.     IfErrors 0 error
  478.     StrCmp $OUT '2' 0 error
  479.  
  480.     ${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E1' $OUT
  481.     IfErrors 0 error
  482.     StrCmp $OUT '3' 0 error
  483.  
  484.     goto +2
  485.     error:
  486.     SetErrors
  487.  
  488.     ${StackVerificationEnd}
  489. SectionEnd
  490.  
  491.  
  492. Section WordInsertS
  493.     ${StackVerificationStart} WordInsertS
  494.  
  495.     ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' X ' 'C:\NTLDR' '+2' $OUT
  496.     StrCmp $OUT 'C:\io.sys x C:\logo.sys X C:\NTLDR' 0 error
  497.  
  498.     ${WordInsertS} 'C:\io.sys x C:\logo.sys' ' x ' 'C:\NTLDR' '+2' $OUT
  499.     StrCmp $OUT 'C:\io.sys x C:\NTLDR x C:\logo.sys' 0 error
  500.  
  501.     goto +2
  502.     error:
  503.     SetErrors
  504.  
  505.     ${StackVerificationEnd}
  506. SectionEnd
  507.  
  508.  
  509. Section StrFilter
  510.     ${StackVerificationStart} StrFilter
  511.  
  512.     ${StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  513.     IfErrors error
  514.     StrCmp $OUT '123ABC 456DEF 7890|%#' 0 error
  515.  
  516.     ${StrFilter} '123abc 456DEF 7890|%#' '-' 'ef' '' $OUT
  517.     IfErrors error
  518.     StrCmp $OUT '123abc 456dEF 7890|%#' 0 error
  519.  
  520.     ${StrFilter} '123abc 456DEF 7890|%#' '2' '|%' '' $OUT
  521.     IfErrors error
  522.     StrCmp $OUT 'abcDEF|%' 0 error
  523.  
  524.     ${StrFilter} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
  525.     IfErrors error
  526.     StrCmp $OUT '123a 6F 78|%#' 0 error
  527.  
  528.     ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
  529.     IfErrors error
  530.     StrCmp $OUT '123AbC4567890' 0 error
  531.  
  532.     ${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
  533.     IfErrors error
  534.     StrCmp $OUT '123AbC4567890' 0 error
  535.  
  536.     ${StrFilter} '123abc 456DEF 7890|%#' '123' 'b' 'def' $OUT
  537.     IfErrors 0 error
  538.  
  539.     goto +2
  540.     error:
  541.     SetErrors
  542.  
  543.     ${StackVerificationEnd}
  544. SectionEnd
  545.  
  546.  
  547. Section StrFilterS
  548.     ${StackVerificationStart} StrFilterS
  549.  
  550.     ${StrFilterS} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
  551.     IfErrors error
  552.     StrCmp $OUT '123a 6 78|%#' 0 error
  553.  
  554.     goto +2
  555.     error:
  556.     SetErrors
  557.  
  558.     ${StackVerificationEnd}
  559. SectionEnd
  560.  
  561.  
  562. Section VersionCompare
  563.     ${StackVerificationStart} VersionCompare
  564.  
  565.     ${VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
  566.     StrCmp $OUT '1' 0 error
  567.  
  568.     ${VersionCompare} '1.1.1.1' '1.1.1.10' $OUT
  569.     StrCmp $OUT '2' 0 error
  570.  
  571.     ${VersionCompare} '91.1.1.1' '101.1.1.9' $OUT
  572.     StrCmp $OUT '2' 0 error
  573.  
  574.     ${VersionCompare} '1.1.1.1' '1.1.1.1' $OUT
  575.     StrCmp $OUT '0' 0 error
  576.  
  577.     ${VersionCompare} '1.1.1.9' '1.1.1.10' $OUT
  578.     StrCmp $OUT '2' 0 error
  579.  
  580.     ${VersionCompare} '1.1.1.0' '1.1.1' $OUT
  581.     StrCmp $OUT '0' 0 error
  582.  
  583.     ${VersionCompare} '1.1.0.0' '1.1' $OUT
  584.     StrCmp $OUT '0' 0 error
  585.  
  586.     goto +2
  587.     error:
  588.     SetErrors
  589.  
  590.     ${StackVerificationEnd}
  591. SectionEnd
  592.  
  593.  
  594. Section VersionConvert
  595.     ${StackVerificationStart} VersionConvert
  596.  
  597.     ${VersionConvert} '9.0a' '' $OUT
  598.     StrCmp $OUT '9.0.01' 0 error
  599.  
  600.     ${VersionConvert} '9.0c' '' $OUT
  601.     StrCmp $OUT '9.0.03' 0 error
  602.  
  603.     ${VersionConvert} '0.15c-9m' '' $OUT
  604.     StrCmp $OUT '0.15.03.9.13' 0 error
  605.  
  606.     ${VersionConvert} '0.15c+' 'abcdefghijklmnopqrstuvwxyz+' $OUT
  607.     StrCmp $OUT '0.15.0327' 0 error
  608.  
  609.     ${VersionConvert} '0.0xa12.x.ax|.|.|x|a|.3|a.4.||5.|' '' $OUT
  610.     StrCmp $OUT '0.0.2401.12.24.0124.24.01.3.01.4.5' 0 error
  611.  
  612.     goto +2
  613.     error:
  614.     SetErrors
  615.  
  616.     ${StackVerificationEnd}
  617. SectionEnd
  618.  
  619.  
  620. Section WriteUninstaller
  621.     goto +2
  622.     WriteUninstaller '$EXEDIR\un.WordFuncTest.exe'
  623. SectionEnd
  624.  
  625.  
  626.  
  627. ;############### UNINSTALL ###############
  628.  
  629. Section un.Uninstall
  630.     ${un.WordFind} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
  631.     ${un.WordFindS} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
  632.     ${un.WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  633.     ${un.WordFind2XS} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
  634.     ${un.WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  635.     ${un.WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
  636.     ${un.WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  637.     ${un.WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
  638.     ${un.WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  639.     ${un.WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
  640.     ${un.WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  641.     ${un.WordInsertS} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
  642.     ${un.StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  643.     ${un.StrFilterS} '123abc 456DEF 7890|%#' '+' '' '' $OUT
  644.     ${un.VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
  645.     ${un.VersionConvert} '9.0a' '' $OUT
  646. SectionEnd
  647.